﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DECOR.BL.BE;
using System.Collections.Generic;
using DECOR.BL.BC;


namespace DECOR.WebApp
{
    public partial class DocImpVisitas : System.Web.UI.Page
    {
        public List<DetalleBE> lstDetalle = new List<DetalleBE>();

        protected void Page_Init(object sender, EventArgs e)
        {
            //this.validaLogin();
        }

        private void validaLogin()
        {
            //if (Session["UsuarioWeb"] == null || Session["UsuarioSAP"] == null)
            //{
            //    Response.Redirect("Login.aspx");
            //    //en vez de redireccionar, debería cerrar la pantalla
            //}
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string numeroPedido = "";
                if (Request.QueryString["np"] != null)
                {
                    numeroPedido = Request.QueryString["np"].ToString();
                }

                if (!numeroPedido.Equals(""))
                {
                    PedidoBE objPedido;
                    if (Session["PedidoImpr"] == null)
                    {
                        objPedido = PedidoBC.Instance.leer(numeroPedido);
                    }
                    else
                    {
                        objPedido = (PedidoBE)Session["PedidoImpr"];
                    }

                    if (objPedido != null)
                    {
                        string pDireccion = "", pTelefono = "", pFax = "", pAtencion = "";
                        PedidoBC.Instance.buscaDatosImpresion(numeroPedido, out pDireccion, out pTelefono, out pFax, out pAtencion);
                        lblDireccionLogo.Text = pDireccion;

                        //sociedad Decor Center 
                        string[] words = pTelefono.Split('%');
                        pTelefono = words[0];
                        lblSociedad.Text = "DECOR CENTER";
                        lblSociedadtxt.Text = words[1];
                        //------------------------------------------
                        
                        lblTelefonosLogo.Text = pTelefono + (pFax == "" ? "" : ", " + pFax);
                        lblAtt.Text = pAtencion;
                        TextoBE objTextoObsAdministrativas = objPedido.Textos.Find(delegate(TextoBE txts) { return (txts.CodTexto == ParametroBC.Instance.getParamValue("TextoObsAdministrativas")); });

                        InterlocutorBE objSolicitanteVende = objPedido.Interlocutores.Find(delegate(InterlocutorBE ilctr) { return (ilctr.Funcion == ParametroBC.Instance.getParamValue("IlocVendedor1")); });
                        GenericBE objCondPago = CondicionPagoBC.Instance.leer(objPedido.CondPago);
                        if (objCondPago != null)
                        {
                            lblCondpago.Text = objCondPago.Descripcion.Replace("::", "");
                        }

                        if (objSolicitanteVende.Persona != null)
                        {
                            PersonaBE objVendedor = PersonaBC.Instance.leer(objSolicitanteVende.Persona.CodPersona);
                            if (objVendedor != null) { lblVendedor.Text = objVendedor.Descripcion; }
                        }
                        lblFecha.Text = objPedido.Fecha.ToShortDateString();


                        //-- validar si es un cliente eventual:
                        ClienteBE objCliente = ClienteBC.Instance.leer(objPedido.CodCliente);
                        if (objCliente.Eventual)//si es eventual
                        {
                            InterlocutorBE objSolicitante = objPedido.Interlocutores.Find(delegate(InterlocutorBE ilctr) { return (ilctr.Funcion == ParametroBC.Instance.getParamValue("IlocCliente")); });
                            if (objSolicitante != null && objSolicitante.Cliente != null)
                            {
                                lblCliente.Text = objSolicitante.Cliente.Descripcion.ToString();
                                lblDirecc.Text = objSolicitante.Cliente.DireccionCompleta.ToString();
                                lblRuc.Text = objSolicitante.Cliente.Ruc.ToString();
                                lblTelef.Text = objSolicitante.Cliente.Telefono.ToString();
                            }
                        }
                        else
                        {
                            //ClienteBE objCliente = ClienteBC.Instance.leer(objPedido.CodCliente, numeroPedido);
                            lblCliente.Text = objCliente.Descripcion;
                            lblDirecc.Text = objCliente.DireccionCompleta;
                            lblRuc.Text = objCliente.Ruc;
                            lblTelef.Text = objCliente.Telefono;
                        }

                        if (ParametroBC.Instance.esTipoOferta(objPedido.CodTipoDoc))
                        {
                            lblCoti.Text = "COTIZACIÓN N° ";
                        }
                        else
                        {
                            lblCoti.Text = "N° PEDIDO DE VISITA ";
                        }

                        lblCotiza.Text = objPedido.NumPedido;


                        //--- quitar componentes de la oferta
                        objPedido.Detalle.RemoveAll(X => X.TipoPosicion == "Z017");
                        objPedido.Detalle.RemoveAll(X => X.TipoPosicion == "Z012");

                        if (!ParametroBC.Instance.esTipoOferta(objPedido.CodTipoDoc))
                        {
                            string strAux;
                            foreach (DetalleBE objItem in objPedido.Detalle)
                            {
                                if (!string.IsNullOrEmpty(objItem.CodLote))
                                {
                                    strAux = "";
                                    List<GenericBE> lstLotes = StockBC.Instance.listarLotes(objItem.CodMaterial, objItem.CodCentro, objItem.CodAlmacen, objItem.Cantidad, objPedido.NumPedido, out strAux);
                                    GenericBE itmLote = lstLotes.Find(X => X.Codigo == objItem.CodLote);

                                    if (itmLote != null && !string.IsNullOrEmpty(itmLote.Codigo))
                                    {
                                        strAux = itmLote.Descripcion;
                                        strAux = strAux.IndexOf('-') >= 0 ? strAux.Substring(strAux.IndexOf('-')) : "";
                                        objItem.DescMaterial += " " + strAux;
                                        objItem.DescMaterial = objItem.DescMaterial.Trim();
                                    }
                                }
                            }
                        }

                        lblValor.Text = ParametroBC.Instance.getParamValue(objPedido.Moneda) + " " + string.Format("{0:n2}", objPedido.SubtotalImp);
                        lblIgv.Text = string.Format("{0:n2}", objPedido.Igv);
                        lblTotal.Text = ParametroBC.Instance.getParamValue(objPedido.Moneda) + " " + string.Format("{0:n2}", objPedido.TotalImp);

                        GdvLista.DataSource = objPedido.Detalle;
                        GdvLista.DataBind();
                    }
                    else
                    {
                        throw new Exception("No se encontró el doc. de ventas.");
                    }
                }
                else
                {
                    throw new Exception("No se especificó el doc. de ventas.");
                }
            }
            catch (Exception ex)
            {
                Response.Write("<h4>No se puede mostrar la información.<br />Error: " + ex.Message + "</h4>");
                Page.Visible = false;
            }
        }

        protected void btnDocImprInst_Click(object sender, ImageClickEventArgs e)
        {

            string numeroPedido = "";
            if (Request.QueryString["np"] != null)
            {
                numeroPedido = Request.QueryString["np"].ToString();
            }
            string str = string.Format("<script type='text/javascript'>" +
                //               " window.open('{0}?np={1}','','width=800,height=600,top=50,left=150,status=no,resizable=no,scrollbars=yes','true'); " +
                   " window.open('{0}?np={1}','','width=800,height=600,top=50,left=250,status=no,resizable=no,scrollbars=yes','true'); " +

                               "</script>"
                           , "DocImpVisitas.aspx", numeroPedido);
            ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "IMPRIMIR", str, false);
        }

    }
}
